释放应用巅峰性能。本综合指南涵盖 New Relic 集成、关键指标、最佳实践以及面向全球团队的高级可观测性。
掌握应用性能:深入探讨 New Relic 集成
在当今竞争激烈的数字环境中,应用程序的性能不仅仅是一项技术指标,更是核心业务功能。加载缓慢的页面、滞后的事务或意外错误可能是忠实客户和错失良机之间的区别。对于全球企业而言,这一挑战被放大,需要为不同地区、网络和设备的用户提供一致、可靠的性能。但是,如何了解为现代应用程序提供支持的复杂、分布式系统?
答案在于 应用性能监控 (APM)。APM 已从简单的监控工具发展成为一种复杂的可观测性实践,可深入了解软件堆栈的每一层。在该领域的领导者中,New Relic 作为一个综合平台脱颖而出,专为现代云原生环境的复杂性而设计。
本指南将作为您深入了解 New Relic 集成的途径。我们将探索 APM 的基础知识、逐步完成集成过程、解读关键指标,并揭示利用这个强大的平台在全球范围内推动技术卓越和业务成功的最佳实践。
了解应用性能监控 (APM)
在我们集成该工具之前,了解该学科至关重要。APM 不仅仅是检查服务器是否在线;而是了解端到端用户体验以及交付体验的代码的健康状况。
什么是 APM?
应用性能监控是监控和管理软件应用程序的性能、可用性和用户体验的实践。强大的 APM 解决方案通过收集、分析和报告来自应用程序的遥测数据来提供详细的见解。其核心功能通常包括:
- 最终用户体验监控:从用户的角度衡量性能,无论是在 Web 浏览器上还是在移动应用程序上。这通常称为真实用户监控 (RUM)。
- 应用程序拓扑映射:自动发现和映射应用程序的组件及其依赖项,从而提供服务如何交互的可视化表示。
- 事务分析:跟踪用户请求 - 从初始点击到数据库查询再返回 - 以识别任何阶段的瓶颈。
- 代码级诊断:查明导致性能问题或错误的确切代码行、函数或数据库查询。
- 基础架构关联:将应用程序性能与底层基础架构(服务器、容器、云服务)的健康状况相关联。
为什么 APM 对现代企业至关重要?
过去,在少数服务器上运行的单体应用程序相对容易监控。今天的现实包括微服务、无服务器函数、容器和复杂的第三方 API 网络,这使得手动监控成为不可能。APM 至关重要,因为它:
- 保护收入和声誉:研究一致表明,应用程序性能与转化率和客户保留率等业务指标之间存在直接关联。APM 帮助您保护底线。
- 实现主动问题解决:APM 会实时提醒您注意异常和性能下降,而无需等待用户报告问题,从而使您可以在问题影响大量用户之前解决问题。
- 支持 DevOps 和 SRE 文化:APM 是 DevOps 和站点可靠性工程 (SRE) 的基石。它为开发和运营团队提供了一个共享的事实来源,从而促进了更快的发布周期、更安全的部署(例如,通过 Canary 版本)以及围绕服务级别目标 (SLO) 的数据驱动型决策。
- 提供全球性能洞察:对于国际公司而言,至关重要的是确保东京的用户与伦敦或圣保罗的用户拥有良好的体验。APM 工具提供对不同地理区域的性能的可见性,从而帮助您优化内容交付和基础架构放置。
New Relic 简介:全栈可观测性平台
虽然许多工具都提供 APM 功能,但 New Relic 通过发展成为全栈可观测性平台而确立了自己的领导地位。这意味着它旨在为您的整个技术堆栈提供单一、统一的视图。
什么是 New Relic?
New Relic 是一个软件即服务 (SaaS) 平台,可让您检测、分析、排除故障并优化整个软件堆栈。它从您的所有系统提取、存储和分析大量的遥测数据 - 指标、事件、日志和跟踪 (MELT)。New Relic One 平台将这些功能整合到单一、有凝聚力的体验中。
其关键组件包括:
- APM:用于深入的代码级应用程序性能洞察。
- 基础架构:用于监控主机、容器和云平台服务(AWS、Azure、GCP)。
- 日志:将日志数据与应用程序性能问题相关联。
- 浏览器 (RUM):用于前端和真实用户监控。
- Synthetics:用于从全球位置进行主动、模拟的用户测试。
- Mobile:用于监控原生 iOS 和 Android 应用程序性能。
- 分布式跟踪:跟踪跨复杂、基于微服务的架构的请求。
主要功能和差异化因素
- 全栈可观测性:能够从浏览器中报告的前端减速无缝导航到特定的 APM 事务,再到 Kubernetes Pod 上的高 CPU 警报(在基础架构中),最后到揭示根本原因的确切日志消息。
- 应用智能 (AI/ML):其 AI 引擎 New Relic AI 可帮助自动检测异常、通过对相关事件进行分组来减少警报噪音,并提出可能的根本原因,从而节省工程师的宝贵时间。
- NRQL (New Relic 查询语言):一种功能强大的类 SQL 查询语言,可让您实时探索所有遥测数据。您可以提出有关系统性能的几乎任何问题,并创建自定义图表和仪表板。
- 可编程性:New Relic One 构建为可编程平台,允许团队在其数据之上构建自定义应用程序和可视化效果,以满足特定的业务需求。
集成过程:分步指南
New Relic 的入门设计为一个简单的过程。集成的核心围绕在您的应用程序中安装特定于语言的“代理”。
先决条件和计划
在您开始之前,一点计划可以大有帮助:
- 创建一个 New Relic 帐户:注册一个 New Relic 帐户。他们提供了一个慷慨的免费层级,非常适合入门和试验。
- 确定您的堆栈:了解您的应用程序使用的编程语言、框架、数据库和基础架构。
- 定义关键事务:确定您的应用程序中最关键的用户旅程(例如,“用户登录”、“添加到购物车”、“处理付款”)。这些是您最想密切关注的交易。
- 查看安全性:您需要您的 New Relic 许可证密钥。像密码一样对待此密钥。了解与您的用户群相关的法规(如欧洲的 GDPR 或加利福尼亚的 CCPA),并在必要时配置代理以避免收集个人身份信息 (PII)。
安装 New Relic 代理
New Relic 代理是一个小型库,您可以将其添加到您的应用程序中。它在您的应用程序进程内部运行,收集性能数据并将其安全地报告给 New Relic 平台。安装方法因语言而异,但原理相同:检测您的代码,而无需进行重大的代码更改。
New Relic 的“引导式安装”是推荐的起点,因为它通常可以检测您的环境并提供量身定制的说明。以下是一些流行语言的高级概述:
- Java:在启动 Java 虚拟机 (JVM) 时,通常使用命令行标志 (`-javaagent:newrelic.jar`) 附加代理。无需代码更改。
- Python:通过 pip (`pip install newrelic`) 安装代理,然后将其用作标准启动命令的包装器(例如,`newrelic-admin run-program gunicorn ...`)。
- .NET:MSI 安装程序通常处理设置,配置 .NET 探查器以自动附加到您的 IIS 应用程序池或 .NET Core 进程。
- Node.js:您通过 npm (`npm install newrelic`) 安装代理,然后添加 `require('newrelic');` 作为应用程序主脚本的第一行。
- Ruby、PHP、Go:每个都有其自己的记录良好的代理安装过程,通常涉及添加 gem/包和配置文件。
安装代理并重新启动应用程序后,数据应在几分钟内开始出现在您的 New Relic 帐户中。
配置和自定义
默认代理配置提供了大量信息,但自定义它会释放其真正的力量。这通常通过配置文件(例如,`newrelic.yml` 或环境变量)完成。
- 设置应用程序名称 (`app_name`):这是最关键的设置。它决定了如何在 New Relic UI 中聚合数据。使用一致的命名约定,尤其是在微服务环境中(例如,`[environment]-[service-name]`)。
- 启用分布式跟踪:对于微服务架构,这是必备功能。确保在您的所有服务上启用它,以获得端到端的可见性。
- 添加自定义属性:使用业务上下文丰富您的数据。例如,您可以将属性(如 `userId`、`customerTier` 或 `productSKU`)添加到您的事务中。这使您可以以有意义的方式对性能数据进行切片和切块(例如,“高级客户是否体验到更快的响应时间?”)。
- 创建自定义事件:报告特定的业务事件(如新用户注册或已完成的购买)到 New Relic,以将它们与性能指标相关联。
了解数据:关键 New Relic APM 指标
数据开始流动后,您将看到各种图表和指标。让我们分解 APM 摘要页面上找到的最重要的指标。
APM 摘要页面:您的指挥中心
这是您对应用程序运行状况的概览。它通常包含选定时间段内的核心指标图表。
核心指标解释
- 响应时间:这是您的应用程序处理请求的平均时间。New Relic 提供了强大的颜色编码细分,显示此时间花费在哪里(例如,在 Python 解释器中、在数据库调用中、在外部 API 调用中)。响应时间的峰值通常是问题的第一个指标。
- 吞吐量:以每分钟请求数 (RPM) 衡量,这告诉您应用程序正在处理多少流量。将响应时间的峰值与吞吐量的峰值相关联可以帮助您识别与负载相关的性能问题。
- 错误率:导致未处理的错误或异常的请求百分比。这是应用程序可靠性的直接衡量标准。New Relic 允许您深入了解每个错误的堆栈跟踪。
- Apdex 分数:Apdex 是一种行业标准指标,用于衡量用户对应用程序响应时间的满意度。这是一个从 0(不可接受)到 1(优秀)的简化分数。您为令人满意的响应时间定义一个阈值“T”。快于 T 的响应是“满意”,T 和 4T 之间的响应是“容忍”,而任何更慢的响应都是“令人沮丧”。Apdex 分数是向非技术利益相关者传达性能的好方法。
使用事务和跟踪深入了解
摘要指标非常适合识别问题,但您需要更深入的工具来找到根本原因。
- 事务:New Relic 按其终结点或控制器(例如,`/api/v1/users` 或 `UserController#show`)对请求进行分组。“事务”页面允许您对这些事务进行排序,以查找最慢、最耗时或最常调用的事务。
- 事务跟踪:对于特别慢的单个请求,New Relic 将捕获详细的“事务跟踪”。这是一个瀑布视图,显示在该请求期间进行的每个函数调用、数据库查询和外部调用,以及每个调用的精确计时。您可以在这里查明一个慢 SQL 查询或效率低下的循环。
- 分布式跟踪:在微服务架构中,单个用户点击可能会触发跨五个、十个甚至更多服务的请求。分布式跟踪将这些单独的请求拼接在一起,形成一个单一、有凝聚力的跟踪。它允许您查看请求跨服务边界的完整旅程,识别哪个特定服务是复杂工作流中的瓶颈。这是现代应用程序架构的绝对必要功能。
New Relic 的高级可观测性
真正的可观测性来自将 APM 数据与系统遥测的其余部分连接起来。
超越 APM:集成全栈
- 基础架构监控:通过在您的主机上或 Kubernetes 集群中安装 New Relic 基础架构代理,您可以将应用程序减速与特定服务器上的 CPU 峰值或容器中的内存泄漏直接相关联。
- 日志管理:配置应用程序的日志记录框架以将日志转发到 New Relic。这使您可以直接在 APM 错误或事务跟踪的上下文中查看相关的日志消息,而无需在工具之间切换。
- 浏览器 (RUM):APM 代理衡量服务器端性能。浏览器代理衡量用户实际体验到的内容,包括网络延迟和浏览器呈现页面所需的时间(前端性能)。将两者结合起来可以为您提供完整的画面。
- Synthetics 监控:不要等待真实用户发现问题。使用 New Relic Synthetics 创建自动脚本,这些脚本会不断检查您的关键终结点从世界各地不同位置的可用性和性能。这对于确保全球可用性和遵守 SLA 至关重要。
构建强大的仪表板
默认 UI 功能强大,但每个业务都是独一无二的。使用 NRQL,您可以构建为不同受众量身定制的自定义仪表板:
- DevOps 团队仪表板:可能会显示特定服务的响应时间、错误率和 CPU 利用率,以及最近的部署标记。
- 业务领导力仪表板:可以显示关键市场的 Apdex 分数、已完成的用户注册数(自定义事件)以及关键第三方支付 API 的性能。
警报和主动监控
没有警报的监控只是观看。强大的警报策略是关键。
- 设置有意义的警报:不要只对 CPU 使用率发出警报。对直接影响用户的指标发出警报,例如 Apdex 分数下降或关键事务的错误率突然飙升。
- 使用异常检测:静态阈值(例如,“当响应时间 > 2 秒时发出警报”)可能会产生噪音。New Relic 的 AI 可以了解您的应用程序的正常性能模式,并在出现重大偏差时发出警报,从而减少警报疲劳。
- 与您的工作流程集成:将警报发送到您的团队已经使用的工具,例如 Slack、Microsoft Teams、PagerDuty 或 ServiceNow,以确保快速响应。
在全球组织中集成 New Relic 的最佳实践
为了在大型或分布式组织中最大化价值,请考虑以下最佳实践:
- 标准化命名约定:应用程序的一致命名方案 (`[environment]-[team]-[service]`) 使查找、过滤和警报服务变得容易。
- 利用标记:使用标记将元数据添加到您的应用程序和基础架构。您可以按 `team`、`project`、`data-center-region` 或 `business-unit` 进行标记,以轻松创建过滤的视图和仪表板。
- 实施基于角色的访问控制 (RBAC):New Relic 允许您创建不同的角色和帐户,以确保团队只能访问与其相关且允许的数据。
- 培养可观测性文化:性能是每个人的责任。鼓励开发人员在合并代码之前查看 New Relic,使产品经理能够了解功能在现实世界中的表现,并为支持团队提供有效解决客户问题所需的数据。
- 持续审查和改进:可观测性不是一项“一劳永逸”的任务。定期审查您的警报阈值、仪表板相关性和自定义检测,以确保它们在您的应用程序发展时仍然提供价值。
结论:将数据转化为可操作的见解
集成 New Relic 不仅仅是安装代理;它还关乎采用深入的系统可见性实践。它将“应用程序速度慢”等抽象问题转化为具体的、可操作的见解,例如“由于缺少索引,`getUserPermissions` 查询在负载下需要 1500 毫秒”。
通过使用 New Relic 有效地检测您的应用程序,您可以使您的团队能够更快、更有信心地行动。您创建了一种数据驱动的文化,在这种文化中,决策基于实际性能,而不是猜测。对于任何全球企业而言,这种监控、理解和优化数字体验的能力不再是一种奢侈 - 而是成功的根本要求。
您的可观测性之旅从安装第一个代理开始。从一个关键应用程序开始,探索数据,设置一些关键警报,然后开始提问。您获得的见解不仅会提高应用程序的性能,还将为整个软件开发生命周期提供宝贵的反馈。